const Koa = require("koa");
const path = require("path");
const cors = require("koa-cors");
const parameter = require("koa-parameter");
const { koaBody } = require("koa-body");
const koastatic = require("koa-static");
const router = require("../Router");
const errHandler = require("./errHandler");
const responseHeader = require("../MiddleWare/koaResponse_Header");
const app = new Koa();
app.use(cors());
app.use(
  koaBody({
    multipart: true,
    formidable: {
      // 在配制选项option里, 不推荐使用相对路径
      // 在option里的相对路径, 不是相对的当前文件. 相对process.cwd()
      uploadDir: path.join(__dirname, "../Upload"),
      keepExtensions: true,
    },
    parsedMethods: ["POST", "PUT", "PATCH", "DELETE"],
  })
);
// // 静态资源文件上传 一定会上传
app.use(koastatic(path.join(__dirname, "../upload")));
// // 请求参数校验使用
app.use(parameter(app));
app.use(router.routes());
// // 确保对未定义的 HTTP 方法或不支持的方法进行适当的响应处理
app.use(router.allowedMethods());
// // 统一的错误处理
app.on("error", errHandler);
module.exports = app;
